#ifndef SORTVISUALIZERWIDGET_H
#define SORTVISUALIZERWIDGET_H

#include <QWidget>
#include <QVector>
#include <QColor>

// 表示每个柱状条的结构体：包含值与颜色
struct SortBar {
    int value;      // 柱状条的数值
    QColor color;   // 当前柱状条的颜色，用于高亮状态显示（例如比较、交换等）
};

// 自定义 QWidget，用于绘制排序或查找算法的图形动画
class SortVisualizerWidget : public QWidget {
    Q_OBJECT

public:
    // 构造函数，parent 可用于嵌套进其他布局中
    explicit SortVisualizerWidget(QWidget *parent = nullptr);

    // 接收新的数据（柱状条），并触发重绘
    void updateWithData(const QVector<SortBar> &data);

protected:
    // 重写 paintEvent，用于绘制柱状图
    void paintEvent(QPaintEvent *event) override;

private:
    // 当前要展示的数据（包含每个元素的值和颜色）
    QVector<SortBar> bars;
};

#endif // SORTVISUALIZERWIDGET_H
